﻿//using Microsoft.Owin;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;

//namespace Acadsoc.Middleware
//{

//    public abstract class CustomAuthenticationMiddleware<TOptions> : OwinMiddleware where TOptions : AuthenticationOptions
//    {
//        protected AuthenticationMiddleware(OwinMiddleware next, TOptions options)
//            : base(next)
//        {
//            if (options == null)
//            {
//                throw new ArgumentNullException("options");
//            }

//            Options = options;
//        }

//        public TOptions Options { get; set; }

//        public override async Task Invoke(IOwinContext context)
//        {
//            AuthenticationHandler<TOptions> handler = CreateHandler();
//            await handler.Initialize(Options, context);
//            if (!await handler.InvokeAsync())
//            {
//                await Next.Invoke(context);
//            }
//            await handler.TeardownAsync();
//        }

//        protected abstract AuthenticationHandler<TOptions> CreateHandler();
//    }
//}
